<template>
	<view class="xilu">
		<view class="page-foot">
			<Footer :identity="1" :footState="3"></Footer>
		</view>
		<view class="container plr25">
			<view class="ptb30 flex-box">
				<view class="flex-grow-1 fs30 col9">预约记录</view>
				<image src="@/static/images/xilu_icon18.png" mode="aspectFill" class="ico24"></image>
				<view @click.stop="cms_detail(4)" class="pl10 fs28 col2">退款须知</view>
			</view>
			<view class="mt30 xilu_data_link">
				<image v-if="web_url" :src="web_url+'/uniapp_image/xilu_bg_booking.png'" mode="aspectFill"
					class="xilu_data_link_cover"></image>
				<view class="xilu_data_link_view flex-box plr30 flex-between">
					<view class="tc">
						<view class="fs40 colf fw500 lh56">{{userInfo.train_day || 0}}</view>
						<view class="mt10 colf fs26 lh36">累计天数</view>
					</view>
					<view class="tc">
						<view class="fs40 colf fw500 lh56">{{userInfo.train_count || 0}}</view>
						<view class="mt10 colf fs26 lh36">累计上课</view>
					</view>
					<view class="tc">
						<view class="fs40 colf fw500 lh56">{{userInfo.train_duration || 0}}</view>
						<view class="mt10 colf fs26 lh36">累计时长</view>
					</view>
				</view>
			</view>

			<view class="ptb30">
				<view class="xilu_tab_item" :class="nindex==1?'active':''" @click="chooseNav(1)">团课</view>
			</view>
			<template v-if="nindex==1">
				<template v-if="list.length > 0">
					<view class="xilu_tk_item" v-for="(vo,index) in list">
						<view class="flex-box" @click="detail(vo.id, vo.goods.id)">
							<image
								:src="vo.goods.course_camp.coach.xilufitness_urls.coach_avatar || vo.goods.xilufitness_urls.thumb_image"
								mode="aspectFill" class="xilu_tk_item_cover">
							</image>
							<view class="flex-grow-1 pl20">
								<view class="fs32 fw500 colf lh46 m-ellipsis">{{vo.goods.goods_name || ''}}</view>
								<view class="mt15 lh32 fs24 col2">{{vo.goods.course_camp.class_time_txt || ''}}
									{{vo.goods.course_camp.start_at || ''}}～{{vo.goods.course_camp.end_at || ''}}
								</view>
								<view class="flex-box mt15" @tap.stop="openLocation(vo.shop.lat,vo.shop.lng)">
									<image src="@/static/images/xilu_icon_address_gray.png" mode="aspectFill"
										class="ico28">
									</image>
									<view class="m-ellipsis flex-grow-1 pl10 pr20 fs28 col9 lh40">
										{{vo.shop.address || ''}}
									</view>
									<image src="@/static/images/xilu_guide.png" mode="aspectFill" class="ico30"></image>
								</view>
							</view>
						</view>
						<view class="flex-box flex-end mt30">
							<view v-if="vo.show_cancel == 1 && vo.order_status == 1" @click="cancelOrder(vo.id, vo.goods.id)"
								class="xilu_btn1">取消预约</view>
							<view @click="detail(vo.id, vo.goods.id)" class="xilu_btn1">查看详情</view>
							<view v-if="vo.order_status == 1 || vo.order_status == 2" @click="codeOpen(vo)"
								class="xilu_btn2">查看签到码</view>
							<view v-if="vo.order_status == 3" @click="to_comment(vo.id, vo.goods.id)" class="xilu_btn1">去评价</view>
							<view class="xilu_btn3" v-if="vo.order_status == 6">课时已完成</view>
							<view class="xilu_btn3" v-if="vo.order_status == 5">已过期</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 2">上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 3">已上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 4">已评语</view>
						</view>
					</view>
				</template>

				<template v-else>
					<empty-data :tips="'暂无预约记录'" :lineHeight="100"></empty-data>
				</template>

			</template>

			<template v-if="nindex==2">

				<template v-if="list.length > 0">

					<view class="xilu_tk_item" v-for="(vo,index) in list">
						<view class="flex-box" @click="detail(vo.id, vo.goods.id)">
							<image
								:src="vo.goods.course_camp.coach.xilufitness_urls.coach_avatar || vo.goods.xilufitness_urls.thumb_image"
								mode="aspectFill" class="xilu_tk_item_cover">
							</image>
							<view class="flex-grow-1 pl20">
								<view class="fs32 fw500 colf lh46 m-ellipsis">{{vo.goods.goods_name || ''}}</view>
								<view class="mt15 fs24 col9 lh32">已签到<text
										class="col2">{{vo.code_num || 0}}</text>/{{vo.code_total_num || 0}}</view>
								<view class="flex-box mt15" @tap.stop="openLocation(vo.shop.lat,vo.shop.lng)">
									<image src="@/static/images/xilu_icon_address_gray.png" mode="aspectFill"
										class="ico28">
									</image>
									<view class="m-ellipsis flex-grow-1 pl10 pr20 fs28 col9 lh40">
										{{vo.shop.address || ''}}
									</view>
									<image src="@/static/images/xilu_guide.png" mode="aspectFill" class="ico30"></image>
								</view>
							</view>
						</view>

						<view class="flex-box flex-end mt20">
							<view @click="detail(vo.id, vo.goods.id)" class="xilu_btn1">查看详情</view>
							<view v-if="vo.order_status == 1 || vo.order_status == 2" @click="codeOpen(vo)"
								class="xilu_btn2">查看签到码</view>
							<view v-if="vo.order_status == 3" @click="to_comment(vo.id, vo.goods.id)" class="xilu_btn1">去评价</view>
							<view class="xilu_btn3" v-if="vo.order_status == 6">课时已完成</view>
							<view class="xilu_btn3" v-if="vo.order_status == 5">已过期</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 2">上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 3">已上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 4">已评语</view>
						</view>
					</view>

				</template>

				<template v-else>
					<empty-data :tips="'暂无预约记录'" :lineHeight="100"></empty-data>
				</template>

			</template>

			<template v-if="nindex==3">
				<template v-if="list.length > 0">
					<view class="xilu_tk_item" v-for="(vo,index) in list">
						<view class="flex-box" @click="detail(vo.id, vo.goods.id)">
							<image
								:src="vo.goods.course_camp.coach.xilufitness_urls.coach_avatar || vo.goods.xilufitness_urls.thumb_image"
								mode="aspectFill" class="xilu_tk_item_cover">
							</image>
							<view class="flex-grow-1 pl20">
								<view class="fs32 fw500 colf lh46 m-ellipsis">{{vo.goods.goods_name || ''}}</view>
								<view class="mt15 lh32 fs24 col2">
									{{vo.goods.course_camp.start_at || ''}}～{{vo.goods.course_camp.end_at || ''}}
								</view>
								<view class="mt15 fs24 col9 lh32">已签到<text
										class="col2">{{vo.code_num || 0}}</text>/{{vo.code_total_num || 0}}</view>
							</view>
						</view>
						<view class="flex-box mt15" @tap.stop="openLocation(vo.shop.lat,vo.shop.lng)">
							<image src="@/static/images/xilu_icon_address_gray.png" mode="aspectFill" class="ico28">
							</image>
							<view class="m-ellipsis flex-grow-1 pl10 pr20 fs28 col9 lh40">{{vo.shop.address || ''}}
							</view>
							<image src="@/static/images/xilu_guide.png" mode="aspectFill" class="ico30"></image>
						</view>
						<view class="flex-box flex-end mt20">
							<view v-if="vo.show_cancel == 1  && vo.order_status == 1" @click="cancelOrder(vo.id)"
								class="xilu_btn1">取消预约</view>
							<view @click="detail(vo.id, vo.goods.id)" class="xilu_btn1">查看详情</view>
							<view v-if="vo.order_status == 1 || vo.order_status == 2" @click="codeOpen(vo)"
								class="xilu_btn2">查看签到码</view>
							<view v-if="vo.order_status == 3" @click="to_comment(vo.id, vo.goods.id)" class="xilu_btn1">去评价</view>
							<view class="xilu_btn3" v-if="vo.order_status == 6">课时已完成</view>
							<view class="xilu_btn3" v-if="vo.order_status == 5">已过期</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 2">上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 3">已上传作业</view>
							<view class="xilu_btn1" @click="uploadJob(vo.id, vo.goods.id)" v-if="vo.goods.result_status == 4">已评语</view>
						</view>
					</view>
				</template>
				<template v-else>
					<empty-data :tips="'暂无预约记录'" :lineHeight="100"></empty-data>
				</template>

			</template>

		</view>

		<u-popup :show="showCode" mode="center" bgColor="transparent" @open="codeOpen" @close="codeClose"
			:safeAreaInsetBottom="false">
			<view class="xilu_code_popup pr pt40">
				<view class="tc fs34 col9 lh40">已签到<text
						class="col2">{{code_info.code_num || 0}}</text>/{{code_info.code_total_num || 1}}</view>
				<image @click="codeClose()" src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close">
				</image>

				<image :src="code_info_url" mode="aspectFill" class="xilu_code"></image>
				<view class="tc fs34 colf lh40">出示二维码核销</view>
			</view>
		</u-popup>
	</view>
</template>

<script>
	const app = getApp();
	const webConfig = require("@/util/config");
	export default {
		data() {
			return {
				nindex: 1,
				auth_status: false,
				code_info: null,
				showCode: false,
				userInfo: null,
				list: [],
				page: 1,
				total_count: 0,
				web_url: '',
				code_info_url: ''
			}
		},
		methods: {
			uploadJob(id, goods_id) {
				this.$api.navigate('../upload_job/upload_job?id=' + id + '&goods_id=' + goods_id);
			},
			chooseNav(e) {
				this.nindex = e
				this.clearData();
			},
			//显示核销二维码
			codeOpen(info) {
				let _this = this
				this.$http({
					url:"/addons/xilufitness/order/getCodeUrl",
					data:{
						id: info.id,
						goods_id: info.goods.id
					},
					method:"get"
				}).then(res => {
					_this.code_info_url = res.data
				})
				this.code_info = info
				this.showCode = true
			},
			codeClose() {
				this.showCode = false
			},
			//打开地图
			openLocation(lat, lng) {
				this.$api.openLocation(lat, lng);
			},
			//授权取消
			onAuthCancel(e) {
				this.auth_status = false;
				this.$api.toast('取消授权，可能会使部分服务不能用，或页面信息不完整')
			},
			//授权成功
			onAuthConfirm(e) {
				this.auth_status = false;
				this.getUserInfo();
				this.getLists();
			},
			//清空数据
			clearData() {
				this.page = 1;
				this.list = [];
				this.total_count = 0;
				this.getLists();
			},
			//订单列表
			getLists() {
				let _this = this;
				this.$http({
					url: '/addons/xilufitness/order/getOrderList',
					data: {
						page: _this.page,
						order_type: _this.nindex,
					},
					method: 'get'
				}).then(res => {
					if (res.code == 1 && res.data.list.length > 0) {
						if (_this.page > 1) {
							_this.list.push(...res.data.list)
						} else {
							_this.list = res.data.list || [];
						}
						_this.total_count = res.data.total_count;
					}
				}).catch(error => {
					console.log('orderListError', error);
				})
			},
			//获取用户详情
			getUserInfo() {
				let _this = this;
				this.$http({
					url: '/addons/xilufitness/user/index',
					method: 'get'
				}).then(res => {
					if (res.code == 1) {
						_this.userInfo = res.data.info;
					}
				}).catch(error => {
					console.log('userInfoError', error);
				})
			},
			// 订单详情
			detail(id, goods_id) {
				this.$api.navigate('../booking_info/booking_info?id=' + id + '&goodsId=' + goods_id);
			},
			//取消预约
			cancelOrder(id, goods_id) {
				let _this = this;
				this.$api.modal('温馨提示', '确定取消么?', function(res) {
					if (res.confirm) {
						_this.$http({
							url: '/addons/xilufitness/order/cancelOrder',
							data: {
								id: id,
								goods_id: goods_id
							},
							method: 'post'
						}).then(res => {
							if (res.code == 1) {
								_this.clearData();
							} else {
								_this.$api.toast(res.msg || '取消失败');
							}
						}).catch(error => {
							console.log('orderCancelError', error);
						});
					}
				})
			},
			//退款须知
			cms_detail(is_type) {
				this.$api.navigate('../about_us/about_us?is_type=' + is_type);
			},
			//去评价
			to_comment(id, goods_id) {
				let _this = this;
				this.$api.navigate('../white_appraise/white_appraise?id=' + id + '&goods_id=' + goods_id, function(res) {
					res.eventChannel.on('reloadOrder', function() {
						_this.clearData();
					});
				});
			},

		},
		onLoad() {
			this.web_url = webConfig.base_url || '';
			let token = this.$api.getCache('token');
			if (!token) {
				this.auth_status = true;
			} else {
				this.getUserInfo();
				this.getLists();
			}
		},
		onReachBottom() {
			let _this = this;
			if (this.total_count > this.list.length) {
				this.page = this.page + 1
				this.getLists();
			}
		}
	}
</script>

<style lang="scss" scoped>
	.xilu {
		&_data_link {
			width: 700rpx;
			height: 207rpx;
			position: relative;

			&_cover {
				width: 700rpx;
				height: 207rpx;
				position: relative;
				z-index: 1;
			}

			&_view {
				width: 700rpx;
				height: 207rpx;
				position: absolute;
				z-index: 2;
				top: 0;
				left: 0;
				right: 0;
			}
		}

		&_tab_item {
			margin-right: 40rpx;
			font-size: 34rpx;
			font-weight: 500;
			color: #292B2C;
			line-height: 48rpx;
			display: inline-block;
			vertical-align: top;

			&.active {
				font-size: 34rpx;
				font-weight: 500;
				color: #FFFFFF;
			}
		}

		&_tk_item {
			width: 700rpx;
			margin-bottom: 30rpx;
			background: #292B2C;
			border-radius: 20rpx;
			padding: 20rpx 20rpx 30rpx;

			&_cover {
				width: 150rpx;
				height: 150rpx;
				border-radius: 20rpx;
			}
		}

		&_btn1 {
			width: 206rpx;
			height: 70rpx;
			line-height: calc(70rpx - 2px);
			text-align: center;
			font-size: 28rpx;
			font-weight: 400;
			color: #FFFFFF;
			border-radius: 20rpx;
			border: 1px solid #292B2C;

		}

		&_btn1+&_btn1 {
			margin-left: 20rpx;
		}

		&_btn2 {
			width: 206rpx;
			height: 70rpx;
			line-height: 70rpx;
			text-align: center;
			font-size: 28rpx;
			font-weight: 400;
			color: #0E0E0F;
			background: #FFCF00;
			border-radius: 20rpx;
			margin-left: 20rpx;
		}

		&_btn1+&_btn3 {
			margin-left: 20rpx;
		}

		&_btn3 {
			width: 206rpx;
			height: 70rpx;
			line-height: 70rpx;
			text-align: center;
			font-size: 28rpx;
			font-weight: 400;
			color: #0E0E0F;
			background: #292B2C;
			border-radius: 20rpx;
		}

		&_code_popup {
			width: 600rpx;
			background: #404243;
			border-radius: 20rpx;
			border: 1px solid #454545;
			padding: 40rpx 0 50rpx;
		}

		&_close {
			width: 30rpx;
			height: 30rpx;
			position: absolute;
			top: 45rpx;
			right: 47rpx;
		}

		&_code {
			width: 405rpx;
			height: 400rpx;
			display: block;
			margin: 40rpx auto;
		}
	}
</style>